/*
 * 复合类型（Compound types）可以将多个值组合成一个类型。Rust 有两个原生的复合类型：元组（tuple）和数组（array）。
 * 元组类型（c#里元组我用的挺少的）
 * 元组是一个将多个其他类型的值组合进一个复合类型的主要方式。
 * 我们使用包含在圆括号中的逗号分隔的值列表来创建一个元组。元组中的每一个位置都有一个类型，而且这些不同值的类型也不必是相同的。
 */
pub fn compound_type() {
    let tup: (u32, char, f64) = (2, 'a', 3.14159);
    // 可以用模式匹配的方式获取元组里的值：
    let (x, y, z) = tup;
    println!("{2} - {0} - {1}", x, y, z);
    //输出：3.14159 - 2 - a

    //除了使用模式匹配解构外，也可以使用点号（.）后跟值的索引来直接访问它们
    println!("{}", tup.2);
    //数组和C#差不多
    let months = [
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December",
    ];
    let m: [u32; 10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    println!("{} {}", months[0], m[9]);
    //vector 类型是能够改变长度的数组，这里说会在第八章详细介绍，暂时记下。

    /*
     * 数组
     * 声明方式：[type; number]比如 let arr:[i32;5]=[1,2,3,4,5];
     *
     */
    let arr: [i32; 5] = [0; 5]; //这个可以生成[0,0,0,0,0]详情需要等切片那里介绍
}
/*
 *另外简单了解了一下mod，以后写的东西可以直接在main.rs里调用了，不用一个一个生成
 *
 */
